1. Field of the Invention
The present invention relates to a method for transmitting data, and in particular, to a method for transmitting data, especially control data, between two computer systems.
2. Description of the Related Art
Storage virtualization is a technology that has been used to virtualize physical storage by combining sections of physical storage devices (PSDs) into logical storage entities, herein referred to as logical media units (LMUs), that are made accessible to a host system. This technology has been used primarily in redundant arrays of independent disks (RAID) storage virtualization, which combines smaller physical storage devices into larger, fault tolerant, higher performance logical media units via RAID technology.
A Storage virtualization Controller, abbreviated SVC, is a device the primary purpose of which is to map combinations of sections of physical storage media to logical media units visible to a host system. IO requests received from the host system are parsed and interpreted and associated operations and data are translated into physical storage device IO requests. This process may be indirect with operations cached, delayed (e.g., write-back), anticipated (read-ahead), grouped, etc. to improve performance and other operational characteristics so that a host IO request may not necessarily result directly in physical storage device IO requests in a one-to-one fashion.
An External (sometimes referred to as “Stand-alone”) Storage Virtualization Controller is a Storage Virtualization Controller that connects to the host system via an IO interface and that is capable of supporting connection to devices that reside external to the host system and, in general, operates independently of the host.
The primary motivation in configuring a pair of external storage virtualization controllers (SVCs) into a redundant pair is to allow continued, uninterrupted access to data by a host (or more than one host) even in the event of a malfunction or failure of a single SVC, i.e., an abnormality occurs in a single SVC. This is accomplished by incorporating functionality into the SVCs that allow one controller to take over for the other in the event that the other becomes handicapped or completely incapacitated, i.e., an abnormality occurs in a single SVC.
Redundant storage virtualization controller pair can be configured in active-standby mode or active-active mode. In active-standby mode, a storage virtualization controller (known as a primary storage virtualization controller) presents, manages, and processes all I/O requests, while the other storage virtualization controller (known as a secondary storage virtualization controller) remains idle to back up the primary storage virtualization controller failure. In active-active mode, the two storage virtualization controllers present, manage, or process the I/O requests of various logical media unit in a redundant storage virtualization subsystem. Under active-active mode, the two storage virtualization controllers can replace each other when a malfunction occurs in the other storage virtualization controller. Active-active mode typically provides better performance, since the resources of both storage virtualization controllers (e.g., central processing unit time, internal bus bandwidth) are better able to handle more I/O requests than a single storage virtualization controller.
Regardless of the mode, a basic functionality of a redundant storage virtualization computer system is that when one storage virtualization controller therein has some troubles, the other storage virtualization controller may take over the tasks of the troubled one, such as continuing the data access to the direct access storage devices. An inter-controller communication channel ICC must be provided between the storage virtualization controllers to establish a redundant storage virtualization computer system, thereby transmitting messages therebetween via the inter-controller communication channel ICC. In addition, each storage virtualization controller should always know the latest working information of the other, that is, the two SVCs are almost in synchronization and the data in each are almost the same, so as to take over the functions from the other when there is a problem in the other.
Conventionally, the inter-controller communication channel ICC is implemented by FC-AL (Fibre Channel-Arbitrated Loop) or parallel small computer system interface (SCSI), or serial advanced technology attachment (SATA). The main reasons why interconnects or channels of such protocols is used is that these interconnects support connection with long distance and external connection capability, which facilitate connection between two independent devices.
FIG. 1 is a block diagram of a conventional redundant storage virtualization system. The first storage virtualization controller 100 comprises a redundant controller communication (RCC) interconnect controller 136 establishing an inter-controller communication channel (ICC) to the second storage virtualization controller 100′.
For accomplishing that each of the storage virtualization controllers knows the latest working information of and maintains the data synchronization with its mate (the other storage virtualization controller), in principle, one SVC has to allow its mate to know any change of data of its own such that the two SVCs may be almost in synchronization with each other, and therefore one SVC may take over the other SVC thoroughly, successfully, and immediately when the other SVC has some problems. As such, in some situations, the data transmission on the inter-controller communication channel ICC would be quite heavy. If there is no appropriate transmission method between the two storage virtualization controllers, for example, one storage virtualization controller has not finished executing data in its memory, while the other storage virtualization controller still transmits data, then memory of the receiving storage virtualization controller will overflow, which has great negative impact on system performance and data correctness. Therefore, it is a crucial issue to manage data transmission on the inter-controller communication channel ICC.